package controller.gui;

import java.io.File;

import javax.swing.JFileChooser;

import controller.ClassLoaderConveyor;

import tool.classloader.LocalObjectClassLoader;

/**rappresenta un pulsante di sfoglia del file system
 * il cui scopo è quello di:
 * <ol>
 *  <li>richiedere una cartella</li>
 *  <li>analizzare la cartella setacciando ogni file class</li>
 *  <li>considerare solo i file class figli di una determinata classe, passata nel costruttore di default come <tt>_fatherClass</tt></li> 
 * </ol>
 * 
 * @author Koldar
 * @version 1.4
 * @deprecated il class Loader non è più contenuto nel pulsante sfoglia ma nel SelectionBoxController perché è lui, alla fine, che deve caricare i file, non certo il BrowseButton
 */
@Deprecated
public abstract class ClassLoaderBrowseButtonController extends BrowseButtonController{

	/**indica la classe che carica i file dal file system*/
	protected LocalObjectClassLoader classloader;
	
	/**costruisce un nuovo controller
	 * 
	 * @param _fatherClass indica la classe che tutti i ifle reperiti dal classLoader di questa classe dovranno estendere
	 * @param addlistener se TRUE il controller viene cablato con il <tt>userMode</tt>
	 */
	public ClassLoaderBrowseButtonController(Class<?> _fatherClass,boolean addlisteners){
		super(addlisteners);
		this.classloader=new LocalObjectClassLoader(_fatherClass);
	}
	
	@Override
	public void setChooser() {
		this.filechooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
		this.filechooser.setApproveButtonText("Select Folder");
	}

	/**data la folder passata, la scandaglia con il <tt>classloader</tt> (tipato a LocalObjectFileSystem)
	 * 
	 */
	@Override
	public void okInstructionList(File fileselected) {
		this.classloader.setDirectory(fileselected);
		this.classloader.scanDirectory();
	}

	/**
	 * @return the classloader. For further information visit {@link #classloader}
	 */
	public LocalObjectClassLoader getClassloader() {
		return this.classloader;
	}
	
	

}
